﻿#ifndef PROFILEPAGE_H
#define PROFILEPAGE_H

#include "header.h"
#include "database.h"

class ProfilePage : public QWidget
{
    Q_OBJECT

public:
    explicit ProfilePage(database &db, QWidget *parent = nullptr);
    ~ProfilePage();
    
    // 设置用户信息
    void setUserInfo(int userIdentity, int phoneId, const QString &username);
    // 加载用户信息
    void loadUserInfo();

signals:
    // 昵称变更信号
    void nameChanged(const QString &newName);
    // 地址变更信号
    void addressChanged(const QString &newAddress);
    void profileUpdated();

protected:
    bool eventFilter(QObject *obj, QEvent *event) override;

private slots:
    // 编辑昵称复选框切换
    void onNameEditToggled(bool checked);
    // 编辑地址复选框切换
    void onAddressEditToggled(bool checked);
    // 保存昵称按钮点击
    void onSaveNameClicked();
    // 保存地址按钮点击
    void onSaveAddressClicked();
    // 修改密码按钮点击
    void onChangePasswordClicked();
    // 成为商户按钮点击
    void onBecomeMerchantClicked();
    // 加入骑手按钮点击
    void onBecomeRiderClicked();
    // 充值按钮点击
    void onRechargeClicked();
    // 头像更换按钮点击
    void onChangeAvatarClicked();
    // 营业状态切换按钮点击
    void onStatusToggleClicked();

private:
    // 设置UI
    void setupUI();
    // 显示密码修改对话框
    bool showPasswordChangeDialog();
    // 验证当前密码
    bool verifyCurrentPassword(const QString &currentPassword);
    // 更新密码
    bool updatePassword(const QString &newPassword);
    // 更新钱包显示
    void updateWalletDisplay();

    database &db;
    QString address;
    // 用户信息
    int userIdentity = -1; // 用户身份: 0=管理员, 1=用户, 2=商户, 3=骑手
    int phoneId = -1;     // 用户手机ID
    int userId;   // 用户ID
    QString username;     // 用户名
    QString identityName; // 身份名称
    QString originalName; // 原始昵称
    QString originalAddress; // 原始地址
    double walletBalance = 0.0; // 钱包余额
    
    // UI控件
    QLabel *userIdLabel;
    QLabel *identityLabel;
    
    // 昵称编辑区域
    QLineEdit *nameEdit;
    QCheckBox *nameEditCheckBox;
    QPushButton *saveNameButton;
    
    // 地址编辑区域
    QLineEdit *addressEdit;
    QCheckBox *addressEditCheckBox;
    QPushButton *saveAddressButton;
    
    // 钱包区域
    QLabel *walletLabel;
    QPushButton *rechargeButton;
    
    // 修改密码按钮
    QPushButton *changePasswordButton;
    
    // 身份转换按钮
    QPushButton *becomeMerchantButton;
    QPushButton *becomeRiderButton;

    // 商家头像控件
    QLabel *avatarLabel;
    QPushButton *changeAvatarButton;
    QString avatarPath; // 当前头像路径
    // 商家营业状态控件
    QLabel *statusLabel;
    QPushButton *toggleStatusButton;
    int businessStatus = 1; // 1=营业，0=不营业
};

#endif // PROFILEPAGE_H 
